import { printUnitNum } from './../adjustingSetting/printUnit';

import { topList, leftList, setListFn, numMap, numEnMap } from './../../../utils';

import img from './../../../../components/img/paper6.png';

const addReadLengFunIdObj: any = {};

const writeUpdateTrimmingObj = {
  funId: 'trimming',
  computedValInListObj: {
    // 纸长 - 2（箱长 +  箱宽） - 切角
    num1: {
      funId: 'paperboardLength' // 纸长
    },
    computedType: 'reduce', // -
    num2: {
      computedValInListObj: {
        num1: {
          computedValInListObj: {
            num1: {
              value: 2
            },
            computedType: 'ride', // *
            num2: {
              computedValInListObj: {
                num1: {
                  funId: 'materialLength'
                },
                computedType: 'add', // +
                num2: {
                  funId: 'materialWidth'
                }
              }
            }
          }
        },
        computedType: 'add', // +
        num2: {
          funId: 'chamfer' // 切角
        }
      }
    }
  }
};

const writeUpdateMaterialHeightObj = {
  funId: 'materialHeight',
  computedValInListObj: {
    // 纸宽- 箱宽
    num1: {
      funId: 'paperboardWidth' // 纸宽
    },
    computedType: 'reduce', // -
    num2: {
      funId: 'materialWidth' // 箱宽
    }
  }
};

const printUnitList: any = [];

const writeZeroSwitchingList: any = [];

const printingUnitGapList: any = [];

for (let i = 0; i < printUnitNum; i++) {
  const key = i + 1;

  const defaultWriteValGetLengFunIdObj = {
    1: `${key}ColorImprintingAB`,
    2: `${key}ColorImprintingA`,
    3: `${key}ColorImprintingB`,
    4: `${key}ColorImprintingE`,
    5: `${key}ColorImprintingC`,
    6: `${key}ColorImprintingBE`,
    7: `${key}ColorImprintingBC`,
    8: `${key}ColorImprintingABE`
  };

  printUnitList.push({
    labelZh: `${numMap[key]}色`,
    labelEn: `${numEnMap[key]}-color`,
    type: 'input',
    list: setListFn([
      {
        inputType: 'read',
        labelZh: '实际值',
        labelEn: 'Actual Value',labelRu: `Фактическое значение`,
        funId: `${key}ColorZeroSpotGet`,
        blurChange: true
      },
      {
        inputType: 'readWrite',
        labelZh: '设置值',
        labelEn: 'Set Value',
        funId: `${key}ColorPhaseSet`,
        defaultValGetFunId: `${key}ColorPhaseSet`,
        blurChange: true
      },
      {
        inputType: 'readWrite',
        labelZh: '贴版偏置',
        labelEn: 'Plate Offset',
        funId: `${key}ColorPlatePositionSet`,
        defaultValGetFunId: `${key}ColorPlatePositionSet`,
        blurChange: true
      },
      {
        inputType: 'readWrite',
        labelZh: '印刷位置',
        labelEn: 'Printing Position',
        funId: `${key}ColorPrintingPositionSet`,
        defaultValGetFunId: `${key}ColorPrintingPositionSet`,
        blurChange: true
      },
      {
        inputType: 'btnBool',
        labelZh: '归零切换',
        labelEn: 'Zeroing Switching',
        funId: `${key}ColorZeroSwitching`,
        defaultValGetFunId: `${key}ColorZeroSwitching`,
        hiddenFalseFunIdList: [
          `${key}ColorPlatePositionSet`,
          `${key}ColorPrintingPositionSet`
        ],
        visibilityHidden: true
      }
    ])
  });

  writeZeroSwitchingList.push({
    inputType: 'btnBool',
    labelZh: '归零切换',
    labelEn: 'Zeroing Switching',
    funId: `${key}ColorZeroSwitching`,
    writeValGetFunId: `${key}ColorZeroSwitching`
  });

  printingUnitGapList.push({
    labelZh: `${numMap[key]}色压印`,
    labelEn: `${numEnMap[key]} Color Imprint`,
    type: 'input',
    list: setListFn([
      {
        inputType: 'read',
        labelZh: '实际值',
        labelEn: 'Actual Value',labelRu: `Фактическое значение`,
        funId: `${key}ColorPrintingGapGet`,
        blurChange: true
      },
      {
        inputType: 'readWrite',
        labelZh: '设置值',
        labelEn: 'Set Value',
        funId: `${key}ColorPrintingGapSet`,
        defaultValGetFunId: `${key}ColorPrintingGapSet`,
        defaultWriteValGetLengFunIdObj,
        blurChange: true
      }
    ])
  });

  for (const i in defaultWriteValGetLengFunIdObj) {
    if (!addReadLengFunIdObj[i]) {
      addReadLengFunIdObj[i] = [];
    }

    addReadLengFunIdObj[i].push(defaultWriteValGetLengFunIdObj[i]);
  }

  // printUnitList.push({
  //   type: 'common',
  //   labelZh: `印刷${numMap[key]}单元`,
  //   labelEn: `印刷${numMap[key]}单元[[en]]`,
  //   id: `adjustingPrintUnit${key}`,
  //   list: setPrintUnitListFn(unitDetailsList, key)
  // });
}

export default [
  {
    labelZh: `尺寸`,
    labelEn: `Dimension`,
    id: `adjustingSize`,
    addReadLengFunIdObj,
    saveParameters: false,
    list: [
      {
        type: 'btn',
        labelZh: '设置值',
        labelEn: 'Set Value',
        id: null,
        saveParameters: false,
        hiddenTitle: true,
        list: setListFn([
          // {
          //   inputType: 'btnBool',
          //   labelZh: '归零切换',
          //   labelEn: 'Zeroing Switching',
          //   funId: null,
          //   defaultValGetFunId: null,
          //   modalType: 'adjustingModal'
          // },
          {
            inputType: 'btnText',
            labelZh: '开槽、刀盘、挡板总归位',
            labelEn: 'Slotting, Cutter&Stopper Complete Homing',
            funId: 'overallProgress1',
            defaultValGetFunId: null,
            writeVal: 1
          },
          {
            inputType: 'btnBool',
            labelZh: '刀盘入槽',
            labelEn: 'Cutter into Slot',
            funId: 'enterGroove',
            defaultValGetFunId: null
          },
          {
            // inputType: 'btnBool',
            inputType: 'btnOtherOperate',
            labelZh: '归零切换',
            labelEn: 'Zeroing Switching',
            // funId: '1ColorZeroSwitching',
            // defaultValGetFunId: '1ColorZeroSwitching',
            writeOtherFunIdList: writeZeroSwitchingList
          },
          // {
          //   inputType: 'btnOpenModal',
          //   labelZh: '一键定位',
          //   labelEn: '一键定位[[en]]',
          //   funId: null,
          //   defaultValGetFunId: null,
          //   modalType: 'positioningModal'
          // },
          {
            inputType: 'btnText',
            labelZh: '全部归位',
            labelEn: 'All Homing Completed',
            funId: 'overallProgress',
            precision: 0,
            writeVal: 1,
            textObj: {
              0: {
                labelZh: '全部归位',
                labelEn: 'All Homing Completed'
              },
              1: {
                labelZh: '归位中',
                labelEn: 'In Homing'
              },
              2: {
                labelZh: '归位中',
                labelEn: 'In Homing'
              },
              3: {
                labelZh: '归位中',
                labelEn: 'In Homing'
              },
              4: {
                labelZh: '归位中',
                labelEn: 'In Homing'
              },
              5: {
                labelZh: '归位中',
                labelEn: 'In Homing'
              }
            }
          }
        ])
      },
      {
        type: 'common',
        labelZh: `参数`,
        labelEn: `参数[[en]]`,
        hiddenTitle: true,
        // isBlock: true,
        id: `adjusting`,
        priceList: [
          {
            labelZh: '实际值',
            labelEn: 'Actual Value',labelRu: 'Фактическое значение',
          },
          {
            labelZh: '设置值',
            labelEn: 'Set'
          },
          {
            labelZh: '贴版偏置',
            labelEn: 'Plate Offset'
          },
          {
            labelZh: '印刷位置',
            labelEn: 'Printing Position'
          }
        ],
        list: [
          ...printUnitList,
          ...printingUnitGapList,
          {
            labelZh: `开槽`,
            labelEn: `Slotting`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'frontKnifeGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingPhaseSet',
                defaultValGetFunId: 'slottingPhaseSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `箱高`,
            labelEn: `Box Height`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'slottingBoxHeightGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingBoxHeightSet',
                defaultValGetFunId: 'slottingBoxHeightSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `左挡板`,
            labelEn: `Left Baffle`,labelRu: `Левый упор`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'leftBaffleGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'leftBaffleSet',
                defaultValGetFunId: 'leftBaffleSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `右挡板`,
            labelEn: `Right Baffle`,labelRu: `Правый упор`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'rightBaffleGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'rightBaffleSet',
                defaultValGetFunId: 'rightBaffleSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `后挡板`,
            labelEn: `Rear Baffle`,labelRu: `Задний упор`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'afterBaffleGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'afterBaffleSet',
                defaultValGetFunId: 'afterBaffleSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `切角`,
            labelEn: `Cutting Angle`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'slottingABGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingABSet',
                defaultValGetFunId: 'slottingABSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `角2`,
            labelEn: `Angle 2`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'slottingBCGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingBCSet',
                defaultValGetFunId: 'slottingBCSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `边2`,
            labelEn: `Edge 2`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'slottingCDGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingCDSet',
                defaultValGetFunId: 'slottingCDSet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          },
          {
            labelZh: `修边`,
            labelEn: `Trimming`,
            type: 'input',
            list: setListFn([
              {
                inputType: 'read',
                labelZh: '实际值',
                labelEn: 'Actual Value',labelRu: `Фактическое значение`,
                funId: 'slottingDEGet'
              },
              {
                inputType: 'readWrite',
                labelZh: '设置值',
                labelEn: 'Set Value',
                funId: 'slottingDESet',
                defaultValGetFunId: 'slottingDESet',
                blurChange: true
              },
              {
                inputType: null
              },
              {
                inputType: null
              }
            ])
          }
        ]
      },
      {
        type: 'box',
        labelZh: '箱型配置',
        labelEn: 'Carton Type Configuration',labelRu:'Конфигурация типа коробки',
        id: 'boxOptions',
        img,
        hiddenTitle: true,
        showLabel: true,
        list: setListFn([
          {
            inputType: 'write',
            labelZh: '纸板长',
            labelEn: 'Cardboard Length',labelRu: 'Длина картона',
            top: '100%',
            left: '43%',
            funId: 'paperboardLength',
            defaultValGetOrderField: 'paperboardLength',
            notWrite: true,
            writeUpdateListFunIdObjList: [writeUpdateTrimmingObj],
            blurChange: true
          },
          {
            inputType: 'write',
            labelZh: '纸板宽',
            labelEn: 'Cardboard Width',labelRu: 'Ширина картона',
            top: '42.23%',
            left: '-19%',

            funId: 'paperboardWidth',
            defaultValGetOrderField: 'paperboardWidth',
            notWrite: true,
            blurChange: true,
            writeUpdateListFunIdObjList: [writeUpdateMaterialHeightObj]
          },
          {
            inputType: 'write',
            labelZh: '纸箱长',
            labelEn: 'Carton Length',labelRu: 'Длина картонной коробки',
            top: '-8.38%',
            left: '5.6%',
            funId: 'materialLength',
            defaultValGetOrderField: 'materialLength',
            notWrite: true,
            writeUpdateListFunIdObjList: [writeUpdateTrimmingObj],
            blurChange: true
          },
          {
            inputType: 'write',
            labelZh: '纸箱宽',
            labelEn: 'Carton Width',labelRu: 'Ширина картонной коробки',
            top: '-8.38%',
            left: '29.4%',
            funId: 'materialWidth',
            defaultValGetOrderField: 'materialWidth',
            notWrite: true,
            writeUpdateListFunIdObjList: [
              writeUpdateTrimmingObj,
              writeUpdateMaterialHeightObj
            ],
            blurChange: true
          },
          {
            inputType: 'write',
            labelZh: '纸箱高',
            labelEn: 'Cardboard Height',labelRu: 'Высота картонной коробки',
            top: '42.23%',
            left: leftList[6],

            funId: 'materialHeight',
            defaultValGetOrderField: 'materialHeight',
            notWrite: true,
            blurChange: true
          },
          {
            inputType: 'write',
            labelZh: '切角',
            labelEn: 'Cutting angle',labelRu: 'Обрезка углов',
            top: topList[1],
            left: '-19%',
            funId: 'chamfer',
            defaultValGetOrderField: null,
            notWrite: true,
            writeUpdateListFunIdObjList: [writeUpdateTrimmingObj],
            blurChange: true,
            defaultValGetLocal: true,
            valSetLocal: true
          },
          {
            inputType: 'read',
            labelZh: '修边',
            labelEn: 'Trimming',labelRu: 'Обрезка кромок',
            top: topList[1],
            left: leftList[6],
            funId: 'trimming',
            defaultValGetOrderField: null,
            defaultVal: null
          },
          {
            inputType: 'btnOtherOperate',
            labelZh: '启动定位',
            labelEn: 'Positioning start',labelRu: 'Запуск позиционирования',
            top: topList[2],
            left: leftList[1],
            funId: null,
            defaultValGetOrderField: null,
            writeOtherFunIdList: [
              {
                funId: 'leftBaffleSet', // 左挡板
                inputType: 'readWrite',
                computedValInListObj: {
                  // 箱宽 + 箱长 + 切角
                  num1: {
                    funId: 'chamfer'
                  },
                  computedType: 'add',
                  num2: {
                    computedValInListObj: {
                      num1: {
                        funId: 'materialWidth'
                      },
                      computedType: 'add',
                      num2: {
                        funId: 'materialLength'
                      }
                    }
                  }
                }
              },
              {
                funId: 'rightBaffleSet', // 右挡板
                inputType: 'readWrite',
                computedValInListObj: {
                  // 箱宽 +  箱长 + 边1
                  num1: {
                    funId: 'trimming'
                  },
                  computedType: 'add',
                  num2: {
                    computedValInListObj: {
                      num1: {
                        funId: 'materialWidth'
                      },
                      computedType: 'add',
                      num2: {
                        funId: 'materialLength'
                      }
                    }
                  }
                }
              },
              {
                funId: 'afterBaffleSet', // 后挡板
                inputType: 'readWrite',
                computedValInListObj: {
                  // 箱长 +  箱宽
                  num1: {
                    funId: 'paperboardWidth'
                  },
                  computedType: 'add',
                  num2: {
                    value: 0
                  }
                }
              },
              {
                funId: 'slottingABSet', // 切角
                inputType: 'readWrite',
                computedValInListObj: {
                  // 箱长 +  箱宽
                  num1: {
                    funId: 'materialWidth'
                  },
                  computedType: 'add',
                  num2: {
                    funId: 'materialLength'
                  }
                }
              },
              {
                funId: 'slottingBCSet', // 角2
                inputType: 'readWrite',
                writeValGetListFunId: 'materialWidth'
              },
              {
                funId: 'slottingCDSet', // 边2
                inputType: 'readWrite',
                writeValGetListFunId: 'materialLength'
              },

              {
                funId: 'slottingDESet', // 修边
                inputType: 'readWrite',
                computedValInListObj: {
                  // 箱长 +  箱宽
                  num1: {
                    funId: 'materialWidth'
                  },
                  computedType: 'add',
                  num2: {
                    funId: 'materialLength'
                  }
                }
              },
              {
                funId: 'slottingBoxHeightSet', //箱高
                inputType: 'readWrite',
                writeValGetListFunId: 'materialHeight'
              },
              {
                funId: 'slottingPhaseSet', // 开槽
                inputType: 'readWrite',
                computedValInListObj: {
                  // （纸长 -  箱高 ） /2
                  num1: {
                    computedValInListObj: {
                      num1: {
                        funId: 'paperboardWidth'
                      },
                      computedType: 'reduce',
                      num2: {
                        funId: 'materialHeight'
                      }
                    }
                  },
                  computedType: 'divided',
                  num2: {
                    value: 2
                  }
                }
              }
            ]
          }
        ])
      }
    ]
  }
];
